The present invention relates to client-server computer networks. More specifically, the invention relates to a system and method for providing an integrated view of local and remote windows within a single desktop.
Recent years have seen a resurgence of server-based computing as a preferred model for application deployment, access and use. In server-based computing, applications are installed on a central server or multiple central servers and accessed from client nodes that provide only the display and user input functionality. The benefits of server-based computing include simplified application deployment and updates, the ability to use cheaper client devices, and improved security. The three main components that make up a server-based computing environment are:
1. One or more servers running a multi-user operating system.
2. A remote presentation protocol
3. Client software and device
Microsoft Windows has been traditionally a client-oriented platform, with applications running directly on the client-node, and having only a limited use of central resources, such as printers and file servers. The introduction of Microsoft Terminal Server as an effective implementation of a Windows-compatible multi-user operating system, coupled with introduction of remote presentation protocols, such as Microsoft Remote Desktop Protocol (RDP), have made server-based computing a viable solution. FIG. 1 illustrates in a prior art client-server network a terminal server (110) in communication with clients (140) using a protocol (130) such as RDP. Terminal Server (110) creates multiple virtual desktops (120), one per each user session. RDP transmits an image of virtual desk-tops (120) to be displayed by the client software on clients (140) and transmits user inputs, such as keyboard or mouse inputs, back from clients (140) to virtual desktops (120) on server (110). Typically, clients (140) are provided with a representation of the entire virtual desktop (120) for the specific session, as a single unit.
Because of the client-oriented tendencies and capabilities of modern operating systems, such as Windows itself, a mixed-model, or hybrid operation, is often desired rather than a pure server-based computing model. In such a mixed-model some applications are run remotely on the server and other applications are run locally on the client. Benefits of this model include reduced load on the servers, reduced network traffic and the ability to use some applications when off line (i.e. disconnected from the server). In order for such a model to be truly effective, the client software must be able to integrate windows of applications running on the server seamlessly into the client's desktop. Otherwise the client user will quickly become disoriented and frustrated from trying to navigate between applications running on the client's desktop and on a separate server desktop.
Another advantage of integrating the windows of the remote desktop into the client's desktop is in a scenario where a single client node is connected to multiple servers. Instead of server applications running in separate desktops, one per each server, they are all unified in the single local desktop, resulting in improved usability for the user.
The ability to integrate windows of applications running on the server into the client's desktop is known as “seamless windows”. Server applications accessed using the seamless windows mechanism emulate the behavior of local windows, creating a consistent look and feel for the user.
Some remote presentation protocols, such as existing versions of RDP, are limited to transmitting a representation of the entire remote desk-top as a single unit, rather than each window separately.
Referring now to FIG. 2 (prior art), on client node (140), remote virtual desktop (120) is represented by a single local window (230) including windows (240) of the remote applications. Single local window (230) including remote application windows (240), is rendered as an image of virtual remote desktop (120) and overlays windows (220) of local applications on a local desktop (210). In order to create the seamless windows experience using protocols such as RDP, client (140) needs to clip windows (220) along boundaries of local window (230). To be able to perform this clipping, client (140) requires additional information to be transmitted from server (110), information that may not be a standard part of the protocol. Transmitting the additional, required information is performed by installing a component on server (110) that gathers the information and transmits it to client (140).
For the RDP protocol, various extensions exist that provide different levels of seamless windows functionality. The differences between the levels relate with how closely windows (230) of remote applications emulate the behavior of windows (220) belonging to local applications, and how integrated and consistent is the behavior of local desktop (210) on which both types of windows (220 and 230) are displayed. Most implementations strive to emulate behavior of local windows (220) as closely as possible, otherwise inconsistencies between local windows (220) and remote windows (230) break the illusion of a single unified desktop, resulting in usability degradation rather than improvement.
Existing RDP protocol extensions clip the presentation of the remote desktop using only the boundaries of the remote windows. Such a method disregards the area, position and z-order of local windows. As a result, these RDP protocol extensions do not allow local windows to be placed between remote windows belonging to the same user session, in terms of z-order. This behavior has undesirable implications, for example, a remote desktop session contains both word-processing and spreadsheet applications while a web browser is running locally. The browser is the foreground application, and therefore the browser window overlays both the word-processor and spreadsheet application windows. The user clicks the word-processor window in order to bring it to the foreground in order to compare to text in the browser. However, because both the word-processor and spreadsheet are displayed within the same local window, they are both brought forward and the spreadsheet overlays and obscures the browser. This behavior is totally different than that of local applications, and not at all what the user wanted or expected.
There is thus a need for, and it would be highly advantageous to have a method which provides a seamless windows feature for protocols that transmit the remote desktop as a unit, such as current versions of RDP, so that remote windows properly emulate the behavior of local windows regarding windows z-order in the local desktop.
Z-order is an ordering of overlapping two-dimensional objects, such as windows in a graphical user interface (GUI) or shapes in a vector graphics editor. One of the features of a typical GUI is that windows may overlap, so that one window hides part or all of another. When two windows overlap, their z-order determines which one appears on top of the other.
The term “z-order” as used herein refers to the order of windows in a graphical user interface (GUI) along the Z-axis, with the windows in the GUI being a series of planes parallel to the surface of the monitor. The windows are therefore stacked along the Z-axis, and the z-order information thus specifies the front-to-back ordering of the windows on the screen.
The term windows “z-order index” as used herein is an index value that determines which windows lay on top of other windows when they overlap. Windows that have a lower z-order index value obscure windows that have a higher index value. Consequently, windows with a lower z-order index value are said to be in front, or foreground. Windows with a higher z-order value are said to be in the back or background. The user can bring windows to the foreground or send them to the background by interacting with them. For example, in Microsoft Windows, when a user clicks on a window, the default behavior is to bring this window to the foreground.
The terms “client”, “client node” and “client device” are used herein interchangeably. The term “atomic” as used herein refers to a process in which either the process is performed to completion, or none of the steps of the process are performed. The term “topmost” is used herein refers to a window which has the lowest z-order index and appears in front of all other windows.